home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / windownt / spice42.zip / DISK1 / 32SINST.MST < prev    next >
Text File  |  1993-01-09  |  9KB  |  349 lines

  1. '**************************************************************************
  2. '*                       Nutmeg32 setup
  3. '**************************************************************************
  4.  
  5. '' $DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST OPTIONS       = 800
  18. CONST BADPATH       = 6400
  19.  
  20. CONST HELPWELCOME   = 1000
  21. CONST VERPATH       = 1100
  22. CONST EXITFAILNOTWIN31 = 1200
  23. CONST EXITFAILNOTENH = 1300
  24. CONST NUTMEG32INST  = 1400
  25. CONST NUTMEG32PATH  = 1500
  26. CONST HELPNUTMEG32  = 1600
  27. CONST EXITSUCCESS_NT = 1700
  28. CONST ASKQUIT_NT    = 2000
  29. CONST WELCOME_NT    = 2200
  30. CONST EXITQUIT_NT   = 2300
  31. CONST HELPWELCOME_NT = 2400
  32.  
  33. ''Bitmap ID
  34. CONST LOGO = 1
  35.  
  36. GLOBAL DESTSYS$      ''Windows\System directory.
  37. GLOBAL DEST32S$      ''Windows\System\Win32s directory
  38. GLOBAL DESTNUTMEG$     ''Nutmeg32 directory
  39. GLOBAL OS$             ''Operating System
  40.  
  41. DECLARE SUB Install
  42. DECLARE SUB UpdateSystemIni
  43. DECLARE SUB RebootSystem
  44. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  45. DECLARE FUNCTION MakeSystemIni LIB "INIUPD.DLL" (arg1$, arg2$) AS INTEGER
  46. DECLARE FUNCTION RestartWindows LIB "INIUPD.DLL" (arg1$) AS INTEGER
  47.  
  48. INIT:
  49.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  50.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  51.  
  52.     SetBitmap CUIDLL$, LOGO
  53.     SetTitle " Win32s / Nutmeg32 Setup Program"
  54.  
  55.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  56.     IF szInf$ = "" THEN
  57.     szInf$ = GetSymbolValue("STF_CWDDIR") + "nutmeg32.inf"
  58.     END IF
  59.     ReadInfFile szInf$
  60.  
  61.     DESTSYS$ = GetWindowsSysDir()
  62.     DEST32S$ = DESTSYS + "WIN32S\"
  63.  
  64. '$IFDEF DEBUG
  65.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  66.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  67.     IF IsDriveValid(WinDrive$) = 0 THEN
  68.     i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  69.     GOTO QUIT
  70.     END IF
  71. '$ENDIF ''DEBUG
  72.  
  73. CHECK:
  74.     OS$ = "Operating system: " + ENVIRON$("OS")
  75.  
  76.     IF ENVIRON$("OS") = "Windows NT" THEN
  77.         i% = DoMsgBox(OS$, "Environment", MB_TASKMODAL+MB_ICONINFORMATION+MB_OK)
  78.         NT = 1
  79.         ExitCode% = EXITSUCCESSNT
  80.         GOTO NT
  81.     END IF
  82.     IF GetWindowsMajorVersion < 3 THEN
  83.     ExitCode% = EXITFAILNOTWIN31
  84.     GOTO QUIT
  85.     END IF
  86.     IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 1 THEN
  87.     ExitCode% = EXITFAILNOTWIN31
  88.     GOTO QUIT
  89.     END IF
  90.     IF GetWindowsMode < 2  THEN     '' Not Enhanced or Windows NT
  91.     ExitCode% = EXITFAILNOTENH
  92.     GOTO QUIT
  93.     END IF
  94.     NT = 0
  95.     ExitCode% = EXITSUCCESS
  96.  
  97.     NT:
  98.  
  99.  
  100. WELCOME:
  101.     IF NT = 1 THEN
  102.       sz$ = UIStartDlg(CUIDLL$, WELCOME_NT, "FInfoDlgProc", HELPWELCOME_NT, HELPPROC$)
  103.     END IF
  104.  
  105.     IF NT = 0 THEN
  106.       sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", HELPWELCOME, HELPPROC$)
  107.     END IF
  108.  
  109.     IF sz$ = "CONTINUE" THEN
  110.     UIPop 1
  111.     ELSE
  112.     GOSUB ASKQUIT
  113.     GOTO WELCOME
  114.     END IF
  115.    IF NT = 1 THEN
  116.         GOTO NUTMEG32
  117.    END IF
  118.  
  119. GETWIN32SPATH:
  120.     SetSymbolValue "EditTextIn", DESTSYS$
  121.     SetSymbolValue "EditFocus", "END"
  122.  
  123. GETPATHL1:
  124.     sz$ = UIStartDlg(CUIDLL$, VERPATH, "FDispDlgProc", HELPWELCOME, HELPPROC$)
  125.  
  126.     IF sz$ = "CONTINUE" THEN
  127.     IF IsDirWritable(DESTSYS$) = 0 THEN
  128.         GOSUB BADPATH
  129.         GOTO GETPATHL1
  130.     END IF
  131.     UIPop 1
  132.     ELSEIF sz$ = "REACTIVATE" THEN
  133.     GOTO GETPATHL1
  134.     ELSEIF sz$ = "BACK" THEN
  135.     UIPop 1
  136.     GOTO WELCOME
  137.     ELSE
  138.     GOSUB ASKQUIT
  139.     GOTO GETPATHL1
  140.     END IF
  141.  
  142. COPYFILES:
  143.  
  144.     CreateDir DEST32S$, cmoNone
  145.       OpenLogFile MakePath(DEST32S$, "W32SSET.LOG"), 0
  146.  
  147.     Install
  148.     UpdateSystemIni
  149.  
  150.     CloseLogFile
  151.  
  152. NUTMEG32:
  153.     IF NT = 0 THEN
  154.         sz$ = UIStartDlg(CUIDLL$, NUTMEG32INST, "FInfoDlgProc",0, "")
  155.         IF sz$ = "CONTINUE" THEN
  156.         UIPop 1
  157.         ELSE
  158.         GOTO QUIT
  159.         END IF
  160.     END IF
  161.  
  162. GETFREEPATH:
  163.     DESTNUTMEG$ = MID$(DESTSYS$,1,3) + "WIN32APP\NUTMEG32\"
  164.     SetSymbolValue "EditTextIn", DESTNUTMEG$
  165.     SetSymbolValue "EditFocus", "END"
  166.  
  167. GETFREEPATHL1:
  168.     sz$ = UIStartDlg(CUIDLL$, NUTMEG32PATH, "FEditDlgProc", HELPNUTMEG32, HELPPROC$)
  169.  
  170.     IF sz$ = "CONTINUE" THEN
  171.     DESTNUTMEG$ = GetSymbolValue("EditTextOut")
  172.  
  173.     ''Validate new path.
  174.     IF IsDirWritable(DESTNUTMEG$) = 0 THEN
  175.         GOSUB BADPATH
  176.         GOTO GETFREEPATHL1
  177.     END IF
  178.     UIPop 1
  179.  
  180.     GOTO COPYNUTMEG32
  181.     ELSEIF sz$ = "REACTIVATE" THEN
  182.     GOTO GETFREEPATHL1
  183.     ELSEIF sz$ = "EXIT" THEN
  184.     UIPop 1
  185.     GOTO QUIT
  186.     END IF
  187.  
  188. COPYNUTMEG32:
  189.     ClearCopyList
  190.     CreateDir DESTNUTMEG$, cmoNone
  191.  
  192.     IF NT = 0 THEN
  193.       OpenLogFile MakePath(DEST32S$, "SETUP.LOG"), 0
  194.     END IF
  195.  
  196.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  197.     IF NT = 0 THEN
  198.         WriteToLogFile ""
  199.         WriteToLogFile "  User chose as destination directory: '" + DESTNUTMEG$ + "'"
  200.         WriteToLogFile ""
  201.         WriteToLogFile "May have had to create the directory: " + DESTNUTMEG$
  202.         WriteToLogFile ""
  203.     END IF
  204.  
  205.     AddSectionFilesToCopyList "Win32appNutmeg32", SrcDir$, DESTNUTMEG$
  206.     CopyFilesInCopyList
  207.  
  208.     CreateProgmanGroup "WeBeWare's Nutmeg & Spice", "", cmoNone
  209.     ShowProgmanGroup   "WeBeWare's Nutmeg & Spice", 1, cmoNone
  210.     CreateProgmanItem  "WeBeWare's Nutmeg & Spice", "Nutmeg32", DESTNUTMEG$ + "NUTMEG32.EXE", "", cmoOverwrite
  211.     CreateProgmanItem  "WeBeWare's Nutmeg & Spice", "Spice32", DESTNUTMEG$ + "SPICE32.EXE", "", cmoOverwrite
  212.     CreateProgmanItem  "WeBeWare's Nutmeg & Spice", "Readme.1st", "NOTEPAD.EXE " + DESTNUTMEG$ + "readme.1st", "", cmoOverwrite
  213.     CreateProgmanItem  "WeBeWare's Nutmeg & Spice", "Readme.txt", "NOTEPAD.EXE " + DESTNUTMEG$ + "readme.txt", "", cmoOverwrite
  214.     IF NT = 0 THEN
  215.         CloseLogFile
  216.     END IF 
  217.  
  218.  
  219.  
  220. QUIT:
  221.     ON ERROR GOTO ERRQUIT
  222.     IF ERR = 0 THEN
  223.     dlg% = ExitCode%
  224.     ELSEIF ERR = STFQUIT THEN
  225.     IF NT = 1 THEN
  226.         dlg% = EXITQUIT_NT
  227.     ELSE
  228.         dlg% = EXITQUIT
  229.         END IF
  230.     ELSE
  231.     dlg% = EXITFAILURE
  232.     END IF
  233.  
  234. QUITL1:
  235.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  236.     IF sz$ = "REACTIVATE" THEN
  237.     GOTO QUITL1
  238.     END IF
  239.     UIPop 1
  240.  
  241.     IF NT = 0 THEN
  242.       RebootSystem
  243.     END IF
  244.     END
  245.  
  246. ERRQUIT:
  247.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  248.     END
  249.  
  250.  
  251.  
  252. BADPATH:
  253.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  254.     IF sz$ = "REACTIVATE" THEN
  255.     GOTO BADPATH
  256.     END IF
  257.     UIPop 1
  258.     RETURN
  259.  
  260.  
  261.  
  262.   ASKQUIT:
  263.     IF NT = 1 THEN
  264.       sz$ = UIStartDlg(CUIDLL$, ASKQUIT_NT, "FQuitDlgProc", 0, "")
  265.     END IF
  266.  
  267.     IF NT = 0 THEN
  268.       sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  269.     END IF
  270.  
  271.     IF sz$ = "EXIT" THEN
  272.     UIPopAll
  273.     ERROR STFQUIT
  274.     ELSEIF sz$ = "REACTIVATE" THEN
  275.     GOTO ASKQUIT
  276.     ELSE
  277.     UIPop 1
  278.     END IF
  279.     RETURN
  280.  
  281.  
  282.  
  283. '**
  284. '** Purpose:
  285. '**     Builds the copy list and performs all installation operations.
  286. '** Arguments:
  287. '**     none.
  288. '** Returns:
  289. '**     none.
  290. '*************************************************************************
  291. SUB Install STATIC
  292.  
  293.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  294.     IF NT = 0 THEN
  295.         WriteToLogFile ""
  296.         WriteToLogFile "  User chose as destination directory: '" + DESTSYS$ + "'"
  297.         WriteToLogFile ""
  298.         WriteToLogFile "May have had to create the directory: " + DESTSYS$
  299.         WriteToLogFile ""
  300.     END IF
  301.  
  302.     AddSectionFilesToCopyList "WindowsSystem", SrcDir$, DESTSYS$
  303.     AddSectionFilesToCopyList "WindowsSystemWin32s", SrcDir$, DESTSYS$ + "WIN32S\"
  304.  
  305.     t% = RestartWindows( GetWindowsSysDir() + "OLECLI.DLL" )
  306.     SetRestartDir GetWindowsDir()
  307.     CopyFilesInCopyList
  308.  
  309. END SUB
  310.  
  311. SUB UpdateSystemIni STATIC
  312.  
  313.     VxDPath$ = DEST32S$ + "W32S.386"
  314.     SystemIniPath$ = GetWindowsDir()
  315.  
  316.     t% = MakeSystemIni(SystemIniPath$, VxdPath$)
  317.  
  318. END SUB
  319.  
  320. SUB RebootSystem STATIC
  321.  
  322.     i% = RestartListEmpty()
  323.     i% = ExitExecRestart()
  324.  
  325. END SUB
  326.  
  327.  
  328. '**
  329. '** Purpose:
  330. '**     Appends a file name to the end of a directory path,
  331. '**     inserting a backslash character as needed.
  332. '** Arguments:
  333. '**     szDir$  - full directory path (with optional ending "\")
  334. '**     szFile$ - filename to append to directory
  335. '** Returns:
  336. '**     Resulting fully qualified path name.
  337. '*************************************************************************
  338. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  339.     IF szDir$ = "" THEN
  340.     MakePath = szFile$
  341.     ELSEIF szFile$ = "" THEN
  342.     MakePath = szDir$
  343.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  344.     MakePath = szDir$ + szFile$
  345.     ELSE
  346.     MakePath = szDir$ + "\" + szFile$
  347.     END IF
  348. END FUNCTION
  349.